package com.greate.community.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 用户实体类
 * 对应数据库表 `user`
 * 用于存储用户的基本信息和账号状态
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User {

    /**
     * 用户ID
     */
    private int id;
    
    /**
     * 用户名
     */
    private String username;
    
    /**
     * 密码（加密后的）
     */
    private String password;
    
    /**
     * 加密盐值
     */
    private String salt;
    
    /**
     * 电子邮箱
     */
    private String email;
    
    /**
     * 用户类型
     * 0-普通用户; 1-管理员; 2-版主
     */
    private int type;
    
    /**
     * 账号状态
     * 0-未激活; 1-已激活
     */
    private int status;
    
    /**
     * 激活码
     */
    private String activationCode;
    
    /**
     * 头像URL
     */
    private String headerUrl;
    
    /**
     * 注册时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;

    /**
     * 访问令牌
     */
    private String accessToken;
    
    // Lombok @Data注解自动生成getter和setter方法

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", salt='" + salt + '\'' +
                ", email='" + email + '\'' +
                ", type=" + type +
                ", status=" + status +
                ", activationCode='" + activationCode + '\'' +
                ", headerUrl='" + headerUrl + '\'' +
                ", createTime=" + createTime +
                '}';
    }

}
